PageBuilder
Данный набор классов отвечает за добавление одной страницы сайта в сборку.
IPageBuilder
Так как требуются различные сборщики под обычный и мультиязычный сайты, то создан общий интерфейс, определяющий два метода:
build(): void- сборка страницы, по итогам которой должен быть создан файл страницы в сборке и скачаны все assets файлыget_additional_entities(): StaticBuildEntity[]- одна страница может ссылаться на другую или содержать в себе открытие модального окна / панели, эти сущности так же должны попасть в сборку. Данный метод должен вернуть все сущности (страницы), которые нужно дополнительно скачать в сборку
PageBuilderSimple
Класс для добавления страницы сайта без мультиязычности в сборку:
Build: Метод подготавливает и добавляет страницу в сборку:
- Если страница уже есть в сборке то выбрасывает исключение PageSkippedException
- С помощью метода
get_linksсобираются все ссылки на странице, если ссылка ведет на файл, то он должен быть скачан в сборку, если ссылка ведет на другую страницу сайта, то она будет скачана. Получение ссылок происходит с помощью классов Links - Все ссылки обрабатываются в цикле. Путь на сайте преобразуются в пути в сборке, все лишние или некорректные ссылки отбрасываются. Если ссылка ведет на файл, который нужно скачать в сборку, то он скачивается с помощью к лассов Copiers
- Преобразуются ссылки на элементор файлы, чтобы относительные пути в сборке работали правильно
- Все ссылки на странице заменяются на относительные ссылки в сборке
- В конец html файла страницы добавляются требуемые скрипты и стили
Get_additional_entities: Возвращает сущности на которые ссылается страница. Работает на основе методов под различные случаи:
get_cpt_modals- Во всех тегахscriptищет использование модальных окон с помощьюcourseController.modal.openget_jspanel_modals- Во всех тегахscriptищет использование панелей с помощьюcourseController.jsPanel.openget_shortcodes_entities- С помощью шорткодов из плагина Elearning на страницу может добавляться открытие всех сущностей с помощью методов оболочкиcourseController.*.open. Все сущности, с которыми происходит взаимодействие, скачиваются в сборку. Тип сущности определяется по её id